//
// Created by whg on 2025-06-01.
//

#ifndef PYVM_2025_CODE_OBJECT_HPP
#define PYVM_2025_CODE_OBJECT_HPP

#include "object/pyObject.hpp"
#include "object/pyString.hpp"
#include "object/pyList.hpp"

class CodeObject: public PyObject{
public:
    int _argCount;
    int _posArgCount;
    int _keyArgCount;
    int _nLocals;
    int _stackSize;
    int _flags;

    PyString* _byteCodes;
    PyList* _consts;
    PyList* _names;
    PyList* _varNames;

    PyList* _freeVars;
    PyList* _cellVars;

    PyString* _fileName;
    PyString* _moduleName;

    int _lineno;
    PyString* _notable;

    CodeObject(int argCount, int posArgCount, int keyArgCount, int nLocals, int stackSize, int flags,
               PyString* byteCodes, PyList* consts, PyList* names, PyList* varNames, PyList* freeVars,
               PyList* cellVars, PyString* fileName, PyString* moduleName, int lineno, PyString* notable);

};


#endif //PYVM_2025_CODE_OBJECT_HPP
